package test1.run;

import service.ObjectService;
import extthread.ThreadA;
import extthread.ThreadB;

/**
　* @Description: TODO
　* @param ${tags}
　* @return ${return_type}
　* @throws
　* @author Merlin
　* @date 2018/6/21 19:18
　*/

/**
 * 当两个并发线程访问同一个对象object中的 synchronized(this)同步代码块时，一段时间内
 * 只能有一个线程被执行，另一个线程必须等待当前线程执行完这个代码块以后执行该代码块
 */
public class Run {

	public static void main(String[] args) {
		ObjectService service = new ObjectService();

		ThreadA a = new ThreadA(service);
		a.setName("a");
		a.start();

		ThreadB b = new ThreadB(service);
		b.setName("b");
		b.start();
	}

	/**
	 * 输出结果：
	 * begin time=1529580029834
	   end    end=1529580031835
	   begin time=1529580031835
	   end    end=1529580033835
	 *从上述实验可以看出，虽然使用了synchronized同步代码块，但执行的效率还是没有提高，
	 * 执行的效果还是同步运行的。
	 * 以下将通过同步代码块来解决程序执行效率低的问题。
	 */
}
